<?php

namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use DB;
class OperationController extends Controller
{

    /**
     * 静态方法进行权限判断
     * 
     * @param         string               判断操作管理是否关闭
     * @param         string               判断管理员权限是否开启*/
    static public function func($operation_name,$role_func){
        // 进行session判断操作管理是否关闭,管理员权限是否开启，如果违法操作则返回
        if(session($operation_name) == 2 || empty(strstr(session('role_func'),$role_func))){
                return true;
        }
    }

    /**
     * 操作界面列表
     * 
     * @param    array    $data    数据库查询内容
     * @param    int      $count   显示条数
     * @param    string   $search  搜索信息
     * @param    data     搜索到的数据
     * @return 列表模板
     */
    public function getIndex(Request $request)
    {
        // 调用判断方法,只要有一个为真则返回上一级
        if(self::func('操作管理列表','operation_list')){
            return back() ->  with('error','违法操作,禁止访问');
        }
        $count = $request -> input('count','10');
        $search = $request -> input('search','');
        $operation_search = $request -> input('operation_search','');
        $data = DB::table('operation') 
        -> where('operation_name','like','%'.$search.'%') 
        -> where('operation_controller','like','%'.$operation_search.'%') -> paginate($count);
        return view('admin.operation.list',['title'=>'操作界面列表','data'=>$data,'request'=>$request->all()]);
    }

    /**
     * 操作界面添加页面
     * 
     * @return    添加模板
     */
    public function getAdd()
    {
        // 调用判断方法,只要有一个为真则返回上一级
        if(self::func('操作管理添加','operation_add')){
            return back() ->  with('error','违法操作,禁止访问');
        }
        return view('admin.operation.add',['title'=>'操作界面添加']);
    }

    /**
     * 执行操作管理添加
     * 
     * @param    array    $data         操作界面插入表单内容
     * @param    bool     $res          添加执行代码 
     * @return    返回模板
     */
    public function postDoadd(Request $request)
    {   
        // 调用判断方法,只要有一个为真则返回上一级
        if(self::func('操作管理添加','operation_add')){
            return back() ->  with('error','违法操作,禁止访问');
        }
        $data = $request -> except(['_token']);
        $res = DB::table('operation') -> insert($data);
        if($res){
            return redirect('/admin/operation/index') -> with('success','操作添加成功');
        }else{
            return back() -> with('error','操作添加失败');
        }

    }

    /**
     * 操作管理删除
     * 
     * @param    int     $id    要删除的id值
     * @param    bool    $res   执行true or flase
     * @return   返回模板
     */
    public function getDelete(Request $request,$id = '')
    {
        // 调用判断方法,只要有一个为真则返回上一级
        if(self::func('操作管理删除','operation_delete')){
            return back() ->  with('error','违法操作,禁止访问');
        }
        if($id || $id = $request -> input('id')){
            $res = DB::table('operation') -> whereIn('id',$id) -> delete();
            if($res){
                return redirect('/admin/operation/index') -> with('success','操作删除成功');
            }else{
                return back() -> with('error','操作删除失败');
            }
        }
    }

    /**
     * 操作管理修改
     * 
     * @param    int     $id     接收要修改的ID
     * @param    array   $data   单条查询内容
     * @return   修改模板
     */
    public function getEdit($id)
    {
        // 调用判断方法,只要有一个为真则返回上一级
        if(self::func('操作管理修改','operation_edit')){
            return back() ->  with('error','违法操作,禁止访问');
        }
        // 查询要修改的内容
        $data = DB::table('operation')->where('id',$id)->first();
        return view('/admin/operation/edit',['title'=>'操作管理修改','data'=>$data]);
    }

    /** 
     * 执行操作管理修改
     *
     * @param       int      $id          获取要修改的id值
     * @param       array    #data        获取内容
     * @param       bool     $res         判断是否修改成功bool or flash     
     * */
    public function postDoedit(Request $request)
    {   
        // 调用判断方法,只要有一个为真则返回上一级
        if(self::func('操作管理修改','operation_edit')){
            return back() ->  with('error','违法操作,禁止访问');
        }
        $id = $request -> only(['id']);
        // 获取除_token pic id 之外的值
        $data = $request -> except(['_token','id']);
        $res = DB::table('operation') -> where('id', $id) -> update($data);
        if($res){
            return redirect('/admin/operation/index') -> with('success','操作修改成功');
        }else{
            return back() -> with('error','操作修改成功');
        }
    }


    public function getAjaxname(Request $request){
        if($request->has('operation_name')){
            $operation_name = $request -> input('operation_name');
            $data = DB::table('operation') -> where('operation_name',$operation_name) -> first();
            if($data){
                $res = '2';  // 操作名已存在
            }else{
                $res = '1';  // 操作名可以使用
            }
            return $res;
        }

        if($request->has('operation_controller')){
            $operation_controller = $request -> input('operation_controller');
            $data = DB::table('operation') -> where('operation_controller',$operation_controller) -> first();
            if($data){
                $res = '2';  // 控制名已存在
            }else{
                $res = '1';  // 控制名可以使用
            }
            return $res;
        }
    }
}
